﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="AppBase.cs" company="Prolific Notion">
//   (c) Copyright 2010 Simon Dingley t/a Prolific Notion, http://prolificnotion.co.uk
// </copyright>
// <summary>
//   Registers events in Umbraco
// </summary>
// --------------------------------------------------------------------------------------------------------------------

#region License
// --------------------------------------------------------------------------------------------------------------------
// Distrbuted under the MIT License
// --------------------------------------------------------------------------------------------------------------------

// (c) Copyright 2010 Simon Dingley t/a Prolific Notion, http://prolificnotion.co.uk

// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
// documentation files (the "Software"), to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
// to permit persons to whom the Software is furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in all copies or substantial portions of 
// the Software.

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// --------------------------------------------------------------------------------------------------------------------
#endregion

namespace ProlificNotion.Umbraco.ImportMedia
{
    using System;
    using global::umbraco.BusinessLogic;
    using global::umbraco.cms.presentation.Trees;

    /// <summary>
    /// Registers events in Umbraco
    /// </summary>
    public class AppBase : ApplicationBase
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="AppBase"/> class.
        /// </summary>
        public AppBase()
        {
            BaseTree.BeforeNodeRender += BaseContentTree_BeforeNodeRender;
        }

        /// <summary>
        /// Bases the content tree_ before node render.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="node">The tree node.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        private static void BaseContentTree_BeforeNodeRender(ref XmlTree sender, ref XmlTreeNode node, EventArgs e)
        {
            try
            {
                // Make sure the menu is not null
                if (node.Menu != null && node.NodeType.ToLower() == "media")
                {
                    // Locate the index of the item after the sort menu item
                    var index = node.Menu.FindIndex(a => a.Alias.ToLower() == "create") + 1;
                    node.Menu.Insert(index, ImportMediaAction.Instance);
                }

            }
            catch (Exception ex)
            {
                Log.Add(LogTypes.Error, int.Parse(node.NodeID), "Error adding Import Media menu item to " + node.Text + " : " + ex.ToString());
            }
        }
    }
}
